public class DateUtil {//类
   //权限问题   成员变量：定义在方法外部 类的内部的变量
    public int year;
    public int month;
    public int day;
    //day = 2000;语法不支持

    public DateUtil() {//构造方法 不能加void
        this(1999,9,9);//调用当前对象的其他构造方法
        //必须放到第一行 只能在构造方法内部才能用
        System.out.println("不带参数的构造方法：" +
                "这个方法如果没有写 Java会默认提供不带参数的构造方法");
    }
    //重载：方法名必须相同 参数列表不同 返回值没有影响
    public DateUtil(int year,int month,int day) {
        //this();循环调用
        this.year = year;//要习惯使用this
        this.month = month;//加上this表示给当前对象属性赋值
        this.day = day;//访问当前对象的成员变量
        System.out.println("调用了带有三个参数的构造方法");
        //this.show();
    }

    public void setDate(int year,int month,int day) {//隐式参数
        int a = 10;//局部变量：定义在方法内部的！
        this.show();//访问当前对象的成员方法
        this.year = year;//要习惯使用this
        this.month = month;//加上this表示给当前对象属性赋值
        this.day = day;
    }

    public void show() {
        System.out.println("年："+this.year+" 月："+this.month+" 日："+this.day);
    }

    public static void main(String[] args) {
        DateUtil dateUtil = new DateUtil();//调用不带参数的构造方法
        dateUtil.show();
    }

    public static void main2(String[] args) {
        DateUtil dateUtil = new DateUtil(2022,11,7);
        dateUtil.show();
    }

    public static void main1(String[] args) {
        //System.out.println(this.day);静态方法不能使用this
        DateUtil dateUtil = new DateUtil();//实例化对象 此时会调用对象的构造方法
        dateUtil.setDate(2022,11,7);
        dateUtil.show();

        DateUtil dateUtil2 = new DateUtil();
        dateUtil2.setDate(2022,11,7);
        dateUtil2.show();

        DateUtil dateUtil3 = new DateUtil();
        dateUtil3.setDate(2022,11,7);
        dateUtil3.show();
    }
}
